Транзакции
Транзакция начинается с первого выполняемого SQL-оператора (кроме CONNECT
) в пользовательской программе. Когда текущая транзакция заканчивается, следующая начинается с очередного исполняемого SQL-оператора обработки данных.
Декларативные операторы не являются элементами транзакций, поэтому к ним не применяются операции фиксирования или отката.
Операции определения данных всегда выполняются в режиме AUTOCOMMIT
, т.е. откат этих операций не поддерживается. Например, если был выполнен оператор CREATE TABLE
или ALTER TABLE
, то отказаться от созданной таблицы или модификации ее структуры можно только путем явного удаления таблицы оператором DROP TABLE
или (если это допустимо) последующей повторной модификацией.
Транзакция заканчивается одним из следующих способов:
-
выполнение операции
COMMIT
либоROLLBACK
, с или без опцииRELEASE
. Эти операторы фиксируют изменения в БД или выполняют откат к предыдущему состоянию; -
выполнение любого SQL-оператора определения данных (например,
ALTER
,CREATE
,GRANT
), которые инициируют автоматическое подтверждение транзакции (COMMIT
) перед своим выполнением; -
транзакция автоматически завершается при аварийном завершении пользовательского приложения. В этом случае ядро выполняет операцию
ROLLBACK
; -
транзакция автоматически завершается при аварийном завершении ядра СУБД ЛИНТЕР (например, при сбое оборудования или отказе операционной системы). В этом случае при рестарте ядра СУБД незавершенная (прерванная) транзакция также выполняет откат.